package com.example.skin_whitening_ndk;

import android.graphics.Bitmap;
import android.graphics.Color;

public class JavaImageBitmap {
    //亮度
    private static float brightness=0.2f;
    //对比度
    private static float contrainst=0.f;
    //整张图片美白
    public static Bitmap getImageBitmap(Bitmap src){
        int width=src.getWidth();
        int height=src.getHeight();
        Bitmap dst=Bitmap.createBitmap(width,height, Bitmap.Config.RGB_565);
        int a,r,g,b;
        int bab= (int) (255*brightness);
        float ca=1.0f+contrainst;
        int color;
        //依次拿到每一个像素点
        for (int x=0;x<width;x++){
            for (int y=0;y<height;y++){
              color= src.getPixel(x,y);
                a=Color.alpha(color);//得到透明度
                r=Color.red(color);//得到红色
                g=Color.green(color);//得到绿色
                b=Color.blue(color);//得到蓝色
                //增加色度
                int ri=r+bab;
                int gi=g+bab;
                int bi=b+bab;
                //防溢出检测（0~255）
                r=ri>255?255:(ri<0?0:ri);
                g=gi>255?255:(gi<0?0:gi);
                b=bi>255?255:(bi<0?0:bi);
                //扩大对比度,以128为界限，拉大两边的差距
                ri=r-128;
                gi=g-128;
                bi=b-128;

                ri= (int) (ri*ca);
                gi= (int) (gi*ca);
                bi= (int) (bi*ca);

                ri=ri+128;
                gi=gi+128;
                bi=bi+128;

                //防溢出检测（0~255）
                r=ri>255?255:(ri<0?0:ri);
                g=gi>255?255:(gi<0?0:gi);
                b=bi>255?255:(bi<0?0:bi);
                //合成像素
                dst.setPixel(x,y,Color.argb(a,r,g,b));
            }
        }
       return dst;
    }

}
